package main

import (
	"fmt"
)

func main() {
	// 切片是动态数组, 长度不固定, 可增删改查, 索引从0开始

	// 创建切片
	var a1 [] int // nil 切片
	a2 := [] int {} // 空切片
	a3 := [] int {1, 2, 3}
	a4 := make([] int, 5, 8)
	fmt.Println(a1, a2, a3, a4, len(a4), cap(a4))

	// 截取切片
	a5 := [] int {1, 2, 3, 4, 5, 6}
	fmt.Println(a5[1], a5[:], a5[1:], a5[:4], a5[0:3], a5[0:3:4])


	// 追加切片
	a6 := [] int {4, 5, 6}
	a6 = append(a6, 7)
	a6 = append(a6, 8)
	a6 = append(a6, 9)
	a6 = append(a6, 10)
	fmt.Println(a6)

	// 删除切片
	a7 := [] int {1, 2, 3, 4, 5, 6, 7, 8}
	fmt.Println(a7[:len(a7)-2], a7[2:], append(a7[:3], a7[3+2:]...))
}